home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / tex / cmsrc392.zip / BIGOP.MF < prev    next >
Text File  |  1992-03-30  |  17KB  |  387 lines

  1. % This file contains pairs of large operators for math extension fonts.
  2.  
  3. % Each operator has a `{\tt\char`\\textstyle}' form, for math in text,
  4. % and a `{\tt\char`\\displaystyle}' form, for displayed formulas.
  5.  
  6. % Character codes \0106--\0141 are generated.
  7.  
  8. charlist oct"106": oct"107";  % square union signs
  9. charlist oct"110": oct"111";  % contour integral signs
  10. charlist oct"112": oct"113";  % circle-dot operators
  11. charlist oct"114": oct"115";  % circle-plus operators
  12. charlist oct"116": oct"117";  % circle-times operators
  13. charlist oct"120": oct"130";  % summation signs
  14. charlist oct"121": oct"131";  % product signs
  15. charlist oct"122": oct"132";  % integral signs
  16. charlist oct"123": oct"133";  % union signs
  17. charlist oct"124": oct"134";  % intersection signs
  18. charlist oct"125": oct"135";  % multiset union signs
  19. charlist oct"126": oct"136";  % lattice infimum signs
  20. charlist oct"127": oct"137";  % lattice supremum signs
  21. charlist oct"140": oct"141";  % coproduct signs
  22.  
  23. cmchar "\textstyle square set union sign";
  24. beginchar(oct"106",15u#,0,10/6dh#);
  25. adjust_fit(0,0); pickup pencircle scaled stem;
  26. lft x1=hround u; x2=x1; x4=x5=w-x1;
  27. top y1=eps; bot y2=-d; y4=y2; y5=y1;
  28. draw z1---z2---z4---z5;  % stems and bar
  29. labels(1,2,4,5); endchar;
  30.  
  31. cmchar "\displaystyle square set union sign";
  32. beginchar(oct"107",20u#,0,14/6dh#); padded 1/6dh#;
  33. adjust_fit(0,0); pickup pencircle scaled curve;
  34. lft x1=hround u; x2=x1; x4=x5=w-x1;
  35. top y1=eps; bot y2=-d; y4=y2; y5=y1;
  36. draw z1---z2---z4---z5;  % stems and bar
  37. labels(1,2,4,5); endchar;
  38.  
  39. cmchar "\textstyle circle-dot operator";
  40. beginchar(oct"112",20u#,0,10/6dh#);
  41. adjust_fit(0,0); pickup pencircle scaled stem;
  42. lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
  43. circle_points; draw_circle;  % circle
  44. fill fullcircle scaled(bold+4dw+eps) shifted(.5[z4,z8]);  % dot
  45. labels(1,2,3,4,5,6,7,8); endchar;
  46.  
  47. cmchar "\displaystyle circle-dot operator";
  48. beginchar(oct"113",27.2u#,0,14/6dh#); padded 1/6dh#;
  49. adjust_fit(0,0); pickup pencircle scaled curve;
  50. lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
  51. circle_points; draw_circle;  % circle
  52. fill fullcircle scaled(bold+6dw+eps) shifted(.5[z4,z8]);  % dot
  53. labels(1,2,3,4,5,6,7,8); endchar;
  54.  
  55. cmchar "\textstyle circle-plus operator";
  56. beginchar(oct"114",20u#,0,10/6dh#);
  57. adjust_fit(0,0); pickup pencircle scaled stem;
  58. lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
  59. circle_points; draw_circle;  % circle
  60. draw z2--z6; draw z4--z8;  % plus
  61. labels(1,2,3,4,5,6,7,8); endchar;
  62.  
  63. cmchar "\displaystyle circle-plus operator";
  64. beginchar(oct"115",27.2u#,0,14/6dh#); padded 1/6dh#;
  65. adjust_fit(0,0); pickup pencircle scaled curve;
  66. lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
  67. circle_points; draw_circle;  % circle
  68. draw z2--z6; draw z4--z8;  % plus
  69. labels(1,2,3,4,5,6,7,8); endchar;
  70.  
  71. cmchar "\textstyle circle-times operator";
  72. beginchar(oct"116",20u#,0,10/6dh#);
  73. adjust_fit(0,0); pickup pencircle scaled stem;
  74. lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
  75. circle_points; draw_circle;  % circle
  76. draw z1--z5; draw z3--z7;  % times
  77. labels(1,2,3,4,5,6,7,8); endchar;
  78.  
  79. cmchar "\displaystyle circle-times operator";
  80. beginchar(oct"117",27.2u#,0,14/6dh#); padded 1/6dh#;
  81. adjust_fit(0,0); pickup pencircle scaled curve;
  82. lft x6=hround u; x2=w-x6; top y8=0; bot y4=-d;
  83. circle_points; draw_circle;  % circle
  84. draw z1--z5; draw z3--z7;  % times
  85. labels(1,2,3,4,5,6,7,8); endchar;
  86.  
  87. cmchar "\textstyle summation sign";
  88. beginchar(oct"120",19u#,0,10/6dh#);
  89. adjust_fit(0,0); pickup tiny.nib;
  90. numeric top_arm_thickness, bot_arm_thickness;
  91. top_arm_thickness=Vround rule_thickness;
  92. bot_arm_thickness=Vround .9(.5[rule_thickness,curve]);
  93. lft x1l=hround u; x1l=x2l=x4l; x3l-x1l=4/11(w-2u);
  94. top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
  95. numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
  96. penpos1(alpha1*(curve-tiny),0); penpos2(alpha1*(curve-tiny),0);
  97. penpos3(alpha1*(curve-tiny),0);
  98. alpha2=diag_ratio(1,rule_thickness-tiny,y3-y4,x3r-x4l);
  99. penpos4(alpha2*(rule_thickness-tiny),0);
  100. z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
  101. filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle;  % diagonals
  102. pickup crisp.nib; pos5(top_arm_thickness,90); pos6(hair,0);
  103. top y5r=0; x5=x1; rt x6r=hround(w-u); y6=good.y(y5l-beak)-eps;
  104. arm(5,6,a,.45,17/11u);  % upper arm and beak
  105. pos7(bot_arm_thickness,-90); pos8(hair,0);
  106. bot y7r=-d; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+beak)+eps;
  107. arm(7,8,b,.45,17/11u);  % lower arm and beak
  108. penlabels(0,1,2,3,4,5,6,7,8); endchar;
  109.  
  110. cmchar "\displaystyle summation sign";
  111. beginchar(oct"130",26u#,0,14/6dh#); padded 1/6dh#;
  112. adjust_fit(0,0); pickup tiny.nib;
  113. numeric top_arm_thickness, bot_arm_thickness, thick_stem, thin_stem;
  114. thick_stem=bold+4dw; thin_stem=rule_thickness+dw;
  115. top_arm_thickness=Vround .9thin_stem;
  116. bot_arm_thickness=Vround .9(.5[thin_stem,thick_stem]);
  117. lft x1l=hround u; x1l=x2l=x4l; x3l-x1l=4/11(w-2u);
  118. top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
  119. numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
  120. penpos1(alpha1*(thick_stem-tiny),0); penpos2(alpha1*(thick_stem-tiny),0);
  121. penpos3(alpha1*(thick_stem-tiny),0);
  122. alpha2=diag_ratio(1,thin_stem-tiny,y3-y4,x3r-x4l);
  123. penpos4(alpha2*(thin_stem-tiny),0);
  124. z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
  125. filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle;  % diagonals
  126. pickup crisp.nib; pos5(top_arm_thickness,90); pos6(hair,0);
  127. top y5r=0; x5=x1; rt x6r=hround(w-u); y6=good.y(y5l-1.2beak)-eps;
  128. arm(5,6,a,.45,24/11u);  % upper arm and beak
  129. pos7(bot_arm_thickness,-90); pos8(hair,0);
  130. bot y7r=-d; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+1.2beak)+eps;
  131. arm(7,8,b,.45,24/11u);  % lower arm and beak
  132. penlabels(0,1,2,3,4,5,6,7,8); endchar;
  133.  
  134. cmchar "\textstyle product sign";
  135. beginchar(oct"121",17u#,0,10/6dh#);
  136. adjust_fit(0,0); pickup crisp.nib;
  137. numeric heavy_stem,light_stem;
  138. heavy_stem=hround(bold+dw); light_stem=rule_thickness;
  139. pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
  140. pos11(light_stem,90); pos12(light_stem,90); pos22(light_stem,90);
  141. lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround cap_jut;
  142. x1=x1'=x2=x2';
  143. top y1=0; bot y2=-d; y11r=y1; y12l=y22l=y2;
  144. y11l-y1'=y2'-y12r=1.2bracket;
  145. filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
  146.  --z12l--z22l--serif_arc(22r,2'r)--cycle;  % left stem and serifs
  147. pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
  148. pos13(light_stem,90); pos14(light_stem,90); pos24(light_stem,90);
  149. x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
  150. y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
  151. filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
  152.  --z14l--z24l--serif_arc(24r,4'l)--cycle;  % right stem and serifs
  153. filldraw stroke z11e--z13e; % bar
  154. penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
  155.  
  156. cmchar "\displaystyle product sign";
  157. beginchar(oct"131",23u#,0,14/6dh#); padded 1/6dh#;
  158. adjust_fit(0,0); pickup crisp.nib;
  159. numeric heavy_stem,light_stem;
  160. heavy_stem=hround(bold+5dw); light_stem=Vround(rule_thickness+dw);
  161. pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
  162. pos11(light_stem,90); pos12(light_stem,90); pos22(light_stem,90);
  163. lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 1.6cap_jut;
  164. x1=x1'=x2=x2';
  165. top y1=0; bot y2=-d; y11r=y1; y12l=y22l=y2;
  166. y11l-y1'=y2'-y12r=1.8bracket;
  167. filldraw z1r--z11r--serif_arc(11l,1'l)--reverse serif_arc(12r,2'l)
  168.  --z12l--z22l--serif_arc(22r,2'r)--cycle;  % left stem and serifs
  169. pos3(heavy_stem,0);pos4(heavy_stem,0); pos3'(heavy_stem,0);pos4'(heavy_stem,0);
  170. pos13(light_stem,90); pos14(light_stem,90); pos24(light_stem,90);
  171. x3=x3'=x4=x4'=w-x1; x13=x14=w-x11; x24=w-x22;
  172. y3=y13r=y1; y3'=y1'; y4'=y2'; y4=y14l=y24l=y2;
  173. filldraw z3l--z13r--serif_arc(13l,3'r)--reverse serif_arc(14r,4'r)
  174.  --z14l--z24l--serif_arc(24r,4'l)--cycle;  % right stem and serifs
  175. filldraw stroke z11e--z13e; % bar
  176. penlabels(1,1',2,2',3,3',4,4',11,12,13,14,22,24); endchar;
  177.  
  178. cmchar "\textstyle coproduct sign";
  179. beginchar(oct"140",17u#,0,10/6dh#);
  180. adjust_fit(0,0); pickup crisp.nib;
  181. numeric heavy_stem,light_stem;
  182. heavy_stem=hround(bold+dw); light_stem=rule_thickness;
  183. pos1(heavy_stem,0);pos2(heavy_stem,0); pos1'(heavy_stem,0);pos2'(heavy_stem,0);
  184. pos11(light_stem,-90); pos12(light_stem,-90); pos22(light_stem,-90);
  185. lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hro